1. Field of the Invention
The field of the invention is data processing, or, more specifically, methods, apparatus, and products for option ROM characterization.
2. Description of Related Art
The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely complicated devices. Today's computers are much more sophisticated than early systems such as the EDVAC. Computer systems typically include a combination of hardware and software components, application programs, operating systems, processors, buses, memory, input/output devices, and so on. Advances in semiconductor processing and computer architecture push the performance of the computer higher and higher.
Such advances in computer architecture have resulted in a computer system's ability to utilize other computer resources through expansion adapters containing option ROM. Expansion adapters containing option ROM are a valuable tool for expanding the functionality of computer systems. Option ROM allows an expansion card vendor to package initialization code with the adapter. Packaging the initialization code of an expansion adapter greatly simplifies the configuration of the expansion adapter because the expansion adapters are able to configure themselves rather than rely on system firmware.
Some computer architectures, such as the 32-bit x86 architecture developed by Intel, greatly limit the use of option ROM to promote backward compatibility earlier computer architectures. In those early computer architectures, total system computer memory was measured in kilobytes, and the size of a processor's address space was one megabyte. In today's computer architectures, computer memory is measured in gigabytes, and the size of a microprocessor's address space will soon be measured in terabytes. While total system memory and a processor's address space have increased by several orders of magnitude, the range of memory in a processor's memory address space devoted to option ROM has not increased at all. Just as in the early 1980's, the size of the option ROM region in a processor's memory address space remains limited to 128 kilobytes.
When computer architects first implemented option ROM, 128 kilobytes easily contained the option ROM initialization code of all adapters in the system. Since then, adapter functionality has become much more complex, and consequently, the address space required to contain option ROM has also increased. The option ROM of a single expansion bus adapter, such as a Small Computer System Interface (‘SCSI’) adapter, can take as much as 48 kilobytes to perform initialization of the adapter. That is, an expansion bus adapter may occupy up to 37.5% of the option ROM region of the address space. In addition, the ever increasing number of expansion slots in computer systems compounds the problem of running out of space in the option ROM region of the address space. For example, current computer systems may have up to 18 expansion slots, each slot capable of receiving an expansion adapter containing option ROM that requires initialization. Further compounding the allocation of memory in the option ROM region, many option ROMs request certain address ranges in the option ROM region of the address space. These memory allocation requests may not efficiently utilize the option ROM region because unallocated gaps or holes in the option ROM region may result.
Solutions to the 128 kilobyte limitation for option ROM fall into two categories: offline and online. Offline solutions usually require some user intervention and include building a model of the host system that includes all potential adapters which will be used in that particular system. Due to the complexity of building a model of a computer system that includes all potential adapters, expansion adapter manufacturers and expansion adapter users often experiment by placing a group of expansion adapters in various combinations until a successful allocation in the option ROM region is found. Online solutions are those solutions performed by the system BIOS as part of the boot process. Online techniques are preferred to over offline solutions because online techniques provide an automatic solution and require no modification as new expansion adapters are added to the system.
Three of the most common online techniques are Runtime Space Reduction (‘RSR’), Post Memory Manager (‘PMM’), and ROM Sharing. RSR is a simple technique implemented in option ROM initialization code that releases address space only needed during initialization and not during runtime. PMM is a recent addition that allows the storage of some option ROM code and data in an address space outside of the typical 128 kilobyte option ROM region. The PMM technique, however, requires support by the option ROM and system BIOS. ROM sharing is implemented in the option ROM code and allows multiple instances of an expansion adapter to share a single option ROM image.
In addition to these specialized techniques, the most advanced system software also implements one or more of the following conventional sorting techniques: First Fit, Last Fit, Next Fit, Best Fit, Worst Fit, Almost Worst Fit, and Almost Best Fit. These conventional sorting techniques, however, are dependent on an accurate characterization of the option ROMs being sorted in order to make an efficient allocation of the option ROM region in the address space. Unfortunately, the most accurate characterization of the option ROM occurs after allocation is complete because before allocation of the option ROM many of the operating characteristics of the option ROM are unknown. For example, runtime size and support of ROM sharing are only available after the option ROM has been allocated and executed.